{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "adding: /Users/rdeits/.julia/v0.5/DrakeVisualizer/src/lcmtypes to the python path\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO: Precompiling module EnhancedGJK.\n"
     ]
    }
   ],
   "source": [
    "using StaticArrays\n",
    "using CoordinateTransformations\n",
    "using PyPlot\n",
    "import EnhancedGJK"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING: replacing module EnhancedGJK.\n"
     ]
    }
   ],
   "source": [
    "reload(\"EnhancedGJK\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "EnhancedGJK.GJKResult{3,2,Float64}(StaticArrays.SVector{2,Float64}[[-1.25,-1.25],[-1.25,0.75],[-0.25,-0.25]],EnhancedGJK.Difference{StaticArrays.SVector{2,Float64},StaticArrays.SVector{2,Float64}}([1.0,0.0],[0.0,0.0]),0.3535533905932738)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplex = SVector{3}(SVector{2, Float64}[[0., -1], [0., 1], [1., 0]])\n",
    "pt = SVector(0., 0)\n",
    "cache = EnhancedGJK.CollisionCache(simplex, pt);\n",
    "t = IdentityTransformation()\n",
    "result = EnhancedGJK.gjk!(cache, t, Translation([1.25, 0.25]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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TqKiorBardTX1xMaGto3PpS+zNTreO7evZvExEQyMzP7Lvju6elh3rx52Gw2GhoadH2hAerq6jh69OgVY3a7nVWrVhEcHMz69euZNm0ad955p0EJpb29ndjYWH777TdKSkqYMWOG0ZFcTu86nq+99hrPPfcc8M86nmPGjOH77783OKHr6u7uZvHixXz99dfs3r2bBx54wOhI8rfm5mYOHDhwxSUPdrudrKws2tra2Lx5MyEhIbrT3SAVFRXcfffdLF++nIKCgr7x5cuXU1RURE1Nzb+eOTB14wmwYMECiouLSUtLIzIyki+++AKr1crbb79Namqq0fHkMsHBwURGRmoBeRNISEhgz549pKSk9LuZyNfXl4cfftiYYC4mOTmZzz//nPT0dEJCQnj//fc5fPgwe/fuHXCtVXGOdevWsWXLFuLj40lKSur3+IoVKwxIJdczf/58mpubtYC8CaSmpvLee+/xyCOPcN9997Fv3z4KCwuv+JDwekzfeLa3t5OVlcUnn3xCS0sLkydPJiMjo9+FrWI8i8Wiby4yCYvFQm1t7YDr3QYHB/P7778bkMr1dHZ28uKLL1JQUMCpU6eYPn06GzZsYMGCBUZHc2kxMTGUlZUNeHy4ubnR3d1tQCq5npiYGJqbm/WVmSbQu5xlfn4+DQ0NBAcHs3r16kFfXmf6xlNEREREbg6m/uYiEREREbl5qPEUEREREadQ4ykiIiIiTqHGU0REREScQo2niIiIiDiFGk8RERERcQo1niIiIiLiFGo8RURERMQp1HiKiIiIiFOo8RQRERERp1DjKSIiIiJOocZTRERERJzify+hg3KUB/2JAAAAAElFTkSuQmCC",
      "text/plain": [
       "PyPlot.Figure(PyObject <matplotlib.figure.Figure object at 0x31c843590>)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "1-element Array{Any,1}:\n",
       " PyObject <matplotlib.lines.Line2D object at 0x31e2abdd0>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xs = linspace(-5, 5)\n",
    "dists = [EnhancedGJK.gjk!(cache, IdentityTransformation(), Translation(SVector(x, 0))).signed_distance for x in xs]\n",
    "plot(xs, dists, \"b.-\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Julia 0.5.0",
   "language": "julia",
   "name": "julia-0.5"
  },
  "language_info": {
   "file_extension": ".jl",
   "mimetype": "application/julia",
   "name": "julia",
   "version": "0.5.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
